Code for the Amazon Locker Service

Write the object-oriented code to implement the design of the Amazon Locker service problem.

We've gone over the different aspects of the Amazon Locker service and observed the attributes attached to the problem using various UML diagrams. Let’s explore the more practical side of things, where we will work on implementing the Amazon Locker service using multiple languages. This is usually the last step in an object-oriented design interview process.

We have chosen the following languages to write the skeleton code of the different classes present in the Amazon Locker service:

  • Java

  • C#

  • Python

  • C++

  • JavaScript

Amazon Locker service classes#

In this section, we will provide the skeleton code of the classes designed in the class diagram lesson.

Note: For simplicity, we are not defining getter and setter functions. The reader can assume that all class attributes are private and accessed through their respective public getter methods and modified only through their public method functions.

Enumerations#

First, we will define all the enumerations used in the Amazon Locker service. According to the class diagram, there are two enumerations in the system, i.e., LockerSize and LockerState The code to implement these enumerations is as follows:

Note: JavaScript does not support enumerations, so we will be using the Object.freeze()  method as an alternative that freezes an object and prevents further modifications.

Constant definitions

Item and Order#

The Item class represents the single item while the Order represents the order placed by the customer and can contain the list of items. The definition of these two classes is given below:

The Item and Order classes

Package and LockerPackage#

When an order is packed, it is represented by the Package , and the package which is contained in the locker is represented by the LockerPackage class. The code to implement these classes is shown below:

The Package and LockerPackage classes

Locker and LockerLocation#

The Locker is the most important class of the system and a LockerLocation can contain multiple Locker instances. The implementation of these classes is given below:

The Locker and LockerLocation classes

LockerService and Notification#

The final class of an Amazon Locker service is the LockerService class which will be singleton class, which means that the entire system will have only one instance of this class. The following code provides the definition of the LockerService and Notification classes used in the Amazon Locker service:

The LockerService and Notification classes

Wrapping up#

We've explored the complete design of an Amazon Locker service in this chapter. We've looked at how an Amazon Locker service design can be visualized using various UML diagrams.

Activity Diagram for the Amazon Locker Service

Getting Ready: Vending Machine